package com.fita.tencent.entity.weappnotice;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;

/**
 * 
 * @author mohanlan
 *
 */
public class WeappNoticeSender {
	
	/**
	 * 接收者（用户）的 openid
	 */
	private String openid;
	
	/**
	 * 所需下发的模板消息的id
	 */
	private String templateId;
	
	/**
	 * 点击模板卡片后的跳转页面，仅限本小程序内的页面。
	 * 支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转。
	 */
	private String page;
	
	/**
	 * 表单提交场景下，为 submit 事件带上的 formId；
	 * 支付场景下，为本次支付的 prepay_id
	 */
	private String formId;
	
	private Map<String, String> datas;
	
	/**
	 * 模板需要放大的关键词，不填则默认无放大
	 */
	private String emphasisKeyword;
	
	/**
	 * The defaults constructor
	 */
	public WeappNoticeSender() {
	}
	
	/**
	 * 
	 * @return
	 */
	public boolean isVaild() {
		return StringUtils.isNotBlank(this.openid) && StringUtils.isNotBlank(this.templateId) &&
			   StringUtils.isNotBlank(this.formId) && !datas.isEmpty();
	}
	
	/**
	 * 
	 * @return
	 */
	public Map<String, Map<String, String>> getDataParams() {
		
		Map<String, Map<String, String>> result = new LinkedHashMap<String, Map<String, String>>();
		
		for (String key : this.datas.keySet()) { 
		  Map<String, String> item = new HashMap<String, String>();
		  item.put("value", this.datas.get(key));
		  result.put(key, item);
		}
		
		return result;
		
	}

	/**
	 * @return the openid
	 */
	public String getOpenid() {
		return openid;
	}

	/**
	 * @return the templateId
	 */
	public String getTemplateId() {
		return templateId;
	}

	/**
	 * @return the page
	 */
	public String getPage() {
		return page;
	}

	/**
	 * @return the formId
	 */
	public String getFormId() {
		return formId;
	}

	/**
	 * @return the datas
	 */
	public Map<String, String> getDatas() {
		return datas;
	}

	/**
	 * @return the emphasisKeyword
	 */
	public String getEmphasisKeyword() {
		return emphasisKeyword;
	}

	/**
	 * @param openid the openid to set
	 */
	public void setOpenid(String openid) {
		this.openid = openid;
	}

	/**
	 * @param templateId the templateId to set
	 */
	public void setTemplateId(String templateId) {
		this.templateId = templateId;
	}

	/**
	 * @param page the page to set
	 */
	public void setPage(String page) {
		this.page = page;
	}

	/**
	 * @param formId the formId to set
	 */
	public void setFormId(String formId) {
		this.formId = formId;
	}

	/**
	 * @param datas the datas to set
	 */
	public void setDatas(Map<String, String> datas) {
		this.datas = datas;
	}

	/**
	 * @param emphasisKeyword the emphasisKeyword to set
	 */
	public void setEmphasisKeyword(String emphasisKeyword) {
		this.emphasisKeyword = emphasisKeyword;
	}
}
